package com.itextStudy;

import com.itextpdf.awt.geom.Rectangle2D;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;
import com.itextpdf.text.pdf.parser.PdfReaderContentParser;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Classname test
 * @Author AlexZ
 * @Date 2020/9/1 8:51
 * @Version v1.0
 * @Description
 **/
public class test {

    public static void main(String[] args) throws Exception {
        // 模板文件路径
        String templatePath = "D:\\测试.pdf";
        // 生成的文件  本地路径
        String targetPath = "D:\\target.pdf";
        //模拟用户传参
        HashMap<String, String> hashMap = new HashMap<>(5);
        // PDF中的关键字    需要防治的图片
        hashMap.put("Aname", "D:\\A.jpg");
        hashMap.put("Bname", "D:\\B.jpg");
        hashMap.put("甲签章", "D:\\C.jpg");
        hashMap.put("乙签章", "D:\\D.jpg");

        // 读取模板文件
        // InputStream input = new FileInputStream(new File(templatePath));
        PdfReader reader = new PdfReader(templatePath);

        //新建一个PDF解析对象
        PdfReaderContentParser parser = new PdfReaderContentParser(reader);
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(targetPath));
        for (int i = 1; i <= reader.getNumberOfPages(); i++) {
            for (String key : hashMap.keySet()) {
                //新建一个ImageRenderListener对象，该对象实现了RenderListener接口，作为处理PDF的主要类
                TestRenderListener listener = new TestRenderListener(i, key);
                //解析PDF，并处理里面的文字
                parser.processContent(i, listener);
                List<Entity> result = listener.result;
                for (Entity entity : result) {
                    // 获取操作的页面---
                    PdfContentByte under = stamper.getOverContent(entity.getPageNumber());
                    // 读图片
                    Image image = Image.getInstance(hashMap.get(key));
                    // url远程文件旋转需要使用setRotationDegrees   本地使用setRotation
                    image.setRotationDegrees(90f);
                    // 根据域的大小缩放图片
                    double width = Math.abs(entity.getStart().getMinX() - entity.getEnd().getMinX()) * entity.getSign().length();
                    double height = entity.getStart().getHeight();
//                    image.scaleToFit((float) height,(float) width);
                    image.scaleAbsolute((float) height * 2,(float) width);
                    // 添加图片
                    image.setAbsolutePosition((float) entity.getStart().getMinX(), (float) entity.getStart().getMinY() - 5);
                    under.addImage(image);
                }
            }
        }
        stamper.close();
        reader.close();
        System.exit(0);
    }
}